1. Field
This disclosure relates generally to data processing systems, and more specifically, to a bus interconnect with flow control.
2. Related Art
Traditional bus interconnects that handle split transactions require that read data transactions with the same transaction ID must be returned in the same order that the master issued the addresses. Moreover, a slave is allowed to service read data transactions out of order if the transaction IDs are not the same. If read data transactions with the same transaction ID are coming from different slaves, the bus interconnect has to ensure that the transactions are returned to each master in the particular order that the master issued the addresses. For example, if a master performs the following transactions: 1. read to slave A with transaction ID=0; 2. read to slave B with transaction ID=1; 3. read to slave A with transaction ID=1; and 4. read to slave B with transaction ID=0. In this example, if slave A decides to send the data for transaction ID 1 before sending the data for transaction ID 0 and slave B decides to send the data for transaction ID 0 before sending the data for transaction ID 1, then a deadlock will occur. This is because the bus interconnect cannot forward either of these transactions until it forwards transaction ID 0 from slave A first and transaction ID 1 from slave B first.
To avoid such deadlock situations, traditional bus interconnects handle multiple in-order transactions by blocking transactions to slaves until the previous transaction with the same transaction ID is completely finished. Although this simple rule solves the deadlock problem, it can result in performance degradation.
Accordingly, there is a need for a bus interconnect with flow control that can avoid deadlock without degrading the performance of the bus interconnect.